package main

import (
	"fmt"
	"strconv"
	"strings"
)

func main(){

	//统计字符串长度（按字节长度返回）   字母数字一个字节 汉字三个字节
	str := "hello，格格玉"
	fmt.Println("str.length",len(str))


	str2 := "hello，格格玉"
	//中文 转换切片
	r_str2 := []rune(str2)
	
	for i := 0; i<len(str2);i++{
		fmt.Printf("%c\n",str2[i])	
	}

	for i := 0; i<len(r_str2);i++{
		fmt.Printf("%c\n",r_str2[i])	
	}

	
	//字符串转整数 err表示转换失败返回
	n,err := strconv.Atoi("234") 
	if err != nil {
		fmt.Println("转换失败",err)
	}else{
		fmt.Println("转换结果",n)
	}

	//整数转字符串
	str = strconv.Itoa(123)
	fmt.Printf("str=%v,str=%T",str,str)

	//字符串 转 []byte
	var bytes = []byte("hello gegeyu")
	fmt.Println("\nbytes=",bytes)

	//[]byte 转字符串
	str = string([]byte{97,98,99})
	fmt.Printf("str=%v\n",str)

	//10 进制转 2、8、16进制
	str = strconv.FormatInt(123,2)
	fmt.Println("二进制=",str)
	str = strconv.FormatInt(123,16)
	fmt.Println("16进制=",str)

	//查找子串是否在指定字符串中
	b := strings.Contains("hello gegeyu","gege")
	fmt.Printf("b=%v\n",b)

	//字符串指定字符计数
	num := strings.Count("hello gegeyu","ge")
	fmt.Printf("num=%v\n",num)

	//字符串比较 
	//不区分大小写  strings.EqualsFold
	b = strings.EqualFold("gege","Gege")
	fmt.Printf("b=%v\n",b)
	//区分大小写 使用==
	b = "gege" == "Gege"
	fmt.Printf("b=%v\n",b)

	//返回子串在字符串中第一次出现的index 没出现 返回-1
	index := strings.Index("heelo gegeyu","gege")
	fmt.Printf("index=%v\n",index)

	//返回子串在字符串中最后出现的位置
	index = strings.LastIndex("hello ,gegeyu","ge")
	fmt.Printf("lastIndex=%v\n",index)

	//将指定子串替换其他子串 后面表示从前往后换几个 如果全部换 写 -1
	str = strings.Replace("hello gegeyu","gegeyu","格桑玉珍",1)
	fmt.Println("str=",str)

	//按给定字符串分割字符串为数组
	strArr := strings.Split("hello,gegeyu,nosee",",")
	fmt.Printf("strArr=%v\n",strArr)
	for i:=0;i<len(strArr);i++{
		temp := strArr[i]
		fmt.Print(temp + "\t")
	}
	fmt.Println()

	//大小写转换
	str = " Hello GegeYu"
	str = strings.ToLower(str)
	fmt.Println("str小写=",str)
	str = strings.ToUpper(str)
	fmt.Println("str大写=",str)

	//去除字符串左右两边的空格
	str = " hello gegeyu   "
	str = strings.TrimSpace(str)
	fmt.Println("str=",str)

	//将字符串左右两边指定的字符串去掉
	str = "! hello ,  gegeyu  !"
	str = strings.Trim(str," !")
	fmt.Println("str=",str)
	// strings.TrimLeft     strings.TrimRight  去除左边或右边的
	
	//判断是否以指定字符串开头
	str = "hello gegeyu"
	f := strings.HasPrefix(str,"hello")
	fmt.Printf("f=%v\n",f)
	




}
